import json

print('\n#====序列化dict')
d = dict(name=None, age=20, score=88)
data = json.dumps(d)
print(data)    #{"age": 20, "name": null, "score": 88}
#注意，None值被转换为了null，这不行
#对于客户端来说，None值应该是''，0，或者其他什么

print('\n#====反序列化成dict')
'''
json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4, separators=(',', ': '))
===separators: 指定生成的json字符串所用的分隔符，两个分别用于代替“,”、“:”。
===indent:    用于格式化生成的json字符串，接受整数参数的缩进量。
===sort_key: true/false，指定dict在序列化时是否按照key排序。
'''
json_str = '{"age": 20, "score": 88, "name": "Bob"}'
data = json.loads(json_str) #null值变成None
print(data)


print('\n#====对象的json解析')
class Student(object):
    def __init__(self, name, age, score):
        self.name = name
        self.age = age
        self.score = score
    def fromDict(self, **entries):
        self.__dict__.update(entries)

s = Student('Bob', 20, 88)
data = json.dumps(s, default=lambda obj: obj.__dict__)
print(data)

sd = json.loads(data)
s.fromDict(**sd)
print(s.name)
print(s.age)
